import java.util.Scanner;
import java.util.*;
public class test {
    /*给你一个整数数组 nums 和一个整数 k ，判断数组中是否存在两个 不同的索引 i 和 j ，
    满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在，返回 true ；否则，返回 false 。*/
    public static boolean check(int[] nums,int k) {
        //哈希表列表
       /* Map<Integer,List<Integer>>map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            //将值相同的以值为索引将坐标放入列表中
            if(!map.containsKey(nums[i]))
                map.put(nums[i],new ArrayList<>());
            map.get(nums[i]).add(i);
        }
        for(List<Integer>list:map.values()){
             Collections.sort(list);
             if(list.size()<2)continue;
             for(int i=0;i<list.size()-1;i++){
                 if(Math.abs(list.get(i)-list.get(i+1))<=k)
                     return true;
             }
        }
        return false;*/
        //哈希表
        Map<Integer,Integer>map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i])&&Math.abs(i-map.get(nums[i]))<=k){
                return true;
            }
            map.put(nums[i],i);//以值为键，下标记录，下一个数就可以之间遍历比较
        }
        return false;
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] nums=new int[n];
        for(int i=0;i<n;i++){
            nums[i]=sc.nextInt();
        }
        int k=sc.nextInt();
        boolean result=check(nums,k);
        System.out.println(result);
    }
}
